﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
//using System.Web.UI.WebControls;
using Entities;
using System.Windows.Forms;
using DevExpress.Web.ASPxEditors;
using DevExpress.Web.ASPxClasses.Internal;
using DevExpress.Web.ASPxUploadControl;
using Helpers;
using System.Drawing;
using System.IO;

public partial class pPublicacionModificarDatos : System.Web.UI.Page
{

    const string UploadDirectory = "~/ImagenesSubidas/";
    const string ThumbnailFileName = "ImagenProducto.jpg";

    protected void Page_Load(object sender, EventArgs e)
    {


        if (!Page.IsPostBack)
        {
            if (Session["Email"] != null)
                Master.UsuarioRegistrado(Session["Email"].ToString());
            lblError.Visible = false;
            lblActualizacionOK.Visible = false;
            lblIDNegocio.Text = Request["IDNegocio"];
            CargarCombosPrimeraVez();
            if (Request["IDProducto"] != null)
            {
                lblIDProducto.Text = Request["IDProducto"];
                CargarDatosNuevaPublicacion();
            }
            else
            {
                if (Request["IDPublicacion"] != null)
                {
                    trPassword.Visible = false;
                    lblIDPublicacion.Text = Request["IDPublicacion"];
                    CargarDatos();
                    CargarComboSubCategoria();
                }
            }
        }

        //if (uplImage.ImageFolder.ToString() != string.Empty)
        //{
        //    previewImage.Src = uplImage.ImageFolder;
        //}
    }



    private void CargarDatos()
    {
        try
        {
            trFechaAlta.Visible = true;
            txtFechaPublicacion.Visible = true;
            var oPublicacion = Publicacion.BuscarUnoPorIDPublicacion(long.Parse(lblIDPublicacion.Text));
            txtProductoNombre.Text = oPublicacion.Producto.NombreProducto;
            txtProductoPrecio.Text = oPublicacion.Producto.Precio.ToString();
            txtFechaPublicacion.Text = oPublicacion.FechaAlta.ToShortDateString();
            txtProductoDescripcion.Text = oPublicacion.Descripcion;
            cmbCategoria.Text = oPublicacion.Producto.SubCategoria.Categoria.Nombre;
            cmbSubCategoria.Text = oPublicacion.Producto.SubCategoria.Nombre;
            if (oPublicacion.Producto.Imagen != null)
            {
                imageProducto.Value = oPublicacion.Producto.Imagen;
            }

        }
        catch (Exception ex)
        {
            lblError.Text = "Error en método cargar publicacion, Descripción de error: " + ex.Message;
        }
    }

    private void CargarDatosNuevaPublicacion()
    {
        try
        {
            trFechaAlta.Visible = false;
            var oProducto = Producto.BuscarUno(long.Parse(lblIDProducto.Text));
            txtProductoNombre.Text = oProducto.NombreProducto;
            txtProductoPrecio.Text = oProducto.Precio.ToString();
            cmbCategoria.Text = oProducto.SubCategoria.Categoria.Nombre;
            cmbSubCategoria.Text = oProducto.SubCategoria.Nombre;
            if (oProducto.Imagen != null)
            {
                imageProducto.Value = oProducto.Imagen;
            }

        }
        catch (Exception ex)
        {
            lblError.Text = "Error en método cargar datos nueva publicacion, Descripción de error: " + ex.Message;
        }
    }

    private void CargarComboSubCategoria()
    {
        cmbSubCategoria.DataSource = SubCategoria.ObtenerVariosPorCategotia(long.Parse(cmbCategoria.SelectedItem.Value.ToString()));
        cmbSubCategoria.DataBind();
        cmbSubCategoria.Items[0].Selected = true;
    }

    private void CargarCombosPrimeraVez()
    {

        cmbCategoria.DataSource = Categoria.ObtenerTodos();
        cmbCategoria.DataBind();
        cmbCategoria.Items[0].Selected = true;

        cmbSubCategoria.DataSource = SubCategoria.ObtenerVariosPorCategotia(long.Parse(cmbCategoria.SelectedItem.Value.ToString()));
        cmbSubCategoria.DataBind();
        cmbSubCategoria.Items[0].Selected = true;
    }

    private long GuardarNuevo()
    {
        long longIDUsuario = 0;
        try
        {
            Publicacion oPublicacion = new Publicacion(true);
            //Asignamos el producto
            oPublicacion.Producto = new Producto();
            oPublicacion.Producto.IDProducto = long.Parse(lblIDProducto.Text);
            //Asignamos el negocio
            oPublicacion.Negocio = new Negocio();
            oPublicacion.Negocio.IDNegocio = long.Parse(lblIDNegocio.Text);
            //
            oPublicacion.Precio = decimal.Parse(txtProductoPrecio.Text);
            oPublicacion.Descripcion = txtProductoDescripcion.Text;
            oPublicacion.FechaAlta = System.DateTime.Now;
            ////Guarda la nueva publicacion
            longIDUsuario = Publicacion.Nuevo(oPublicacion);
            return longIDUsuario;
        }
        catch (Exception ex)
        {
            lblError.Text = "Error en método guardar producto nuevo, Descripción de error: " + ex.Message;
            return longIDUsuario;
        }
    }

    private void ModificarDatosUsuario()
    {
        try
        {
            Publicacion oPublicacion = Publicacion.BuscarUnoPorIDPublicacion(long.Parse(lblIDPublicacion.Text));
            oPublicacion.Descripcion = txtProductoDescripcion.Text;
            oPublicacion.Precio = decimal.Parse(txtProductoPrecio.Text);
            Publicacion.Modificar(oPublicacion);

        }
        catch (Exception ex)
        {
            lblError.Text = "Error en método modificar datos producto, Descripción de error: " + ex.Message;
        }
    }

    #region eventos

    protected void cmbUsuarioCalle_Callback1(object sender, DevExpress.Web.ASPxClasses.CallbackEventArgsBase e)
    {
        CargarComboSubCategoria();
    }

    protected void btnPopConfirmar_Click(object sender, EventArgs e)
    {
        Decimal dOut;
        if (!Decimal.TryParse(txtProductoPrecio.Text, out dOut))
        {
            lblError.Visible = true;
            lblError.Text = "El precio no tiene el formato correcto. Deben ser solo números ylos decimales deben estár separados por coma";
            return;
        }


        if (lblIDPublicacion.Text == "0")
        {
            if (GuardarNuevo() > 0)
            {
                lblError.Visible = false;
                lblActualizacionOK.Visible = true;
            }
        }
        else
        {
            lblError.Visible = false;
            ModificarDatosUsuario();
            lblActualizacionOK.Visible = true;
        }
        Response.Redirect("pPublicaciones.aspx?IDNegocio=" + lblIDNegocio.Text);

    }


    protected void btnSiguiente_Click(object sender, EventArgs e)
    {
        Response.Redirect("pPublicaciones.aspx?IDNegocio=" + lblIDNegocio.Text);
    }
    #endregion



}